// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi 
// Source File Name:   Iterators.java

package com.hd123.rumba.util;

// import com.persistence.container.ExtendedEnumeration;
import java.util.Collection;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Set;

// Referenced classes of package com.intershop.beehive.foundation.util:
//            ResettableIteratorImpl, ResettableIterator

public class Iterators {
	private static class Enumeration2Iterator implements Iterator {

//		private static HashSet enums = new HashSet();
		private Enumeration enumeration;

		public boolean hasNext() {
			return enumeration.hasMoreElements();
		}

		public Object next() throws NoSuchElementException {
			return enumeration.nextElement();
		}

		public void remove() throws UnsupportedOperationException {
			throw new UnsupportedOperationException();
		}

		protected void finalize() throws Throwable {
			//            if(enum instanceof ExtendedEnumeration)
			//                synchronized(enums)
			//                {
			//                    ((ExtendedEnumeration)enum).discard();
			//                    enums.remove(enum);
			//                }
			super.finalize();
		}

		public Enumeration2Iterator(Enumeration enumeration) {
			this.enumeration = enumeration;
			//            if(enumeration instanceof ExtendedEnumeration)
			//                synchronized(enums)
			//                {
			//                    enums.add(enumeration);
			//                }
		}
	}

	public static Iterator createIterator(Enumeration enumeration) {
		if (enumeration.hasMoreElements())
			return new Enumeration2Iterator(enumeration);
		else
			return ResettableIteratorImpl.getEmptyIterator();
	}

	public static Iterator createIterator(Collection collection) {
		if (!collection.isEmpty())
			return collection.iterator();
		else
			return ResettableIteratorImpl.getEmptyIterator();
	}

	public static Iterator createIterator(Map map) {
		if (!map.isEmpty())
			return map.values().iterator();
		else
			return ResettableIteratorImpl.getEmptyIterator();
	}

	public static Iterator createEmptyIterator() {
		return ResettableIteratorImpl.getEmptyIterator();
	}

	public static ResettableIterator createResettableIterator(Enumeration enumeration) {
		if (enumeration.hasMoreElements())
			return new ResettableIteratorImpl(enumeration);
		else
			return ResettableIteratorImpl.getEmptyIterator();
	}

	public static ResettableIterator createResettableIterator(Iterator iterator) {
		if (iterator.hasNext())
			return new ResettableIteratorImpl(iterator);
		else
			return ResettableIteratorImpl.getEmptyIterator();
	}

	public static ResettableIterator createResettableIterator(Collection collection) {
		if (!collection.isEmpty())
			return new ResettableIteratorImpl(collection.iterator());
		else
			return ResettableIteratorImpl.getEmptyIterator();
	}

	public static ResettableIterator createResettableIterator(Map map) {
		if (!map.isEmpty())
			return new ResettableIteratorImpl(map.values().iterator());
		else
			return ResettableIteratorImpl.getEmptyIterator();
	}

	public static ResettableIterator createEmptyResettableIterator() {
		return ResettableIteratorImpl.getEmptyIterator();
	}

	public static Enumeration createEmptyEnumeration() {
		return ResettableIteratorImpl.getEmptyEnumeration();
	}

	public static Iterator createIterator(Set set) {
	  if (!set.isEmpty())
	    return set.iterator();
	  else
	    return ResettableIteratorImpl.getEmptyIterator();
	}
	
	public Iterators() {
	  super();
	}
}
